﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 挂载式 继承Mono的单例模式基类
/// </summary>
/// <typeparam name="T"></typeparam>
public class SingletonMono<T> : MonoBehaviour where T : MonoBehaviour
{
    public static T instance;

    public static T Instance
    {
        get
        {
            return instance;
        }
    }

    protected virtual void Awake()
    {
        //场景中已经存在一个对应的单例模式对象了 不需要再有一个了
        if(instance != null)
        {
            Destroy(this);
            return;
        }
        instance = this as T;

        //我们挂载继承该单例模式基类的脚本时 依附的对象过场景时就不会被移除了
        //就可以保证在程序的整个生命周期中都存在
        DontDestroyOnLoad(this.gameObject);
    }
}
